# Написать программу, которая раскрашивыает RARS Bitmap Display вертикальными полосками равной ширины (возможно, +1 пиксель) в заданные цвета.
# Цвета вводятся в виде десятичных чисел построчно, конец ввода — 0 (не считается цветом); всего чисел N ⩽ 100.
#    Параметры Bitmap Display: 2×2; 512×256
#    Формула для начала полоски № k: width = 256 * k / N (арифметика целочисленная)

.include "macros.inc"

.eqv    BASE 0x10010000			# MMIO экрана
.eqv    WIDTH 256
.eqv    HEIGHT 128
.eqv    ALLSIZE 0x8000                	# размер экрана в ячейках
	
.data	0x10000000
color:  .space	400


.text
.globl  main
main:
	la	t0 color		# Заполним таблицу цветов
	mv	t1 zero
	li	t2 100
colorloop:
	syscall	5
	beqz	a0 endcolorloop
	sw	a0 (t0)
	addi	t0 t0 4
	addi	t1 t1 1
	bgt	t1 t2 endcolorloop
	b	colorloop
endcolorloop:

	li	t4 BASE			# Выведем полоски
	li	t5 ALLSIZE
	slli	t5 t5 2
	add	t5 t4 t5
	li	t6 BASE
displayloop:
	bge	t4 t5 enddisplayloop	# Проверим на конец видеопамяти
	sub	t2 t4 t6		# Найдем номер точки в строке
	srli	t2 t2 2
	li	t3 WIDTH
	rem	t2 t2 t3
	div	t3 t3 t1		# Узнаем цвет точки из набора цветов
	div	t2 t2 t3
	bne	t2 t1 good		# Если у нас количество цветов не кратно размеру строки, то выбираем последний цвет
	addi	t2 t2 -1
good:	slli	t2 t2 2			# Получаем цвет
	la	t0 color
	add	t0 t0 t2
	lw	t3 (t0)
	sw	t3 (t4)			# Загружаем в видеопамять
	addi	t4 t4 4
	b	displayloop	
enddisplayloop:        

        syscall 10
